<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <!-- 导入页面的基本样式 -->
    <link rel="stylesheet" href="./css/search.css" />
    <!-- 导入 jQuery -->
    <script src="./lib/jquery.js"></script>
    <!-- 导入模板引擎 -->
    <script src="lib/template-web.js"></script>
</head>

<body>
    <div class="container">
        <!-- Logo -->
        <img src="./images/taobao_logo.png" alt="" class="logo" />

        <div class="box">
            <!-- tab 栏 -->
            <div class="tabs">
                <div class="tab-active">宝贝</div>
                <div>店铺</div>
            </div>
            <!-- 搜索区域（搜索框和搜索按钮） -->
            <div class="search-box">
                <input type="text" class="ipt" placeholder="请输入要搜索的内容" />
                <button class="btnSearch">搜索</button>
            </div>
            <!-- 搜索建议列表 -->
            <div class="hotWordLenovoList">

            </div>
        </div>
    </div>
    <!-- -----------------------js代码---------------------- -->
    <!-- 定义模板引擎 -->
    <script type="text/html" id="templateSuggestion">
        {{each result}}
        <div class="suggest-item">{{$value[0]}}</div>
        {{/each}}
    </script>
    <script>
        // 原生的入口函数
        window.onload = function () {
            // 定义全局缓存对象
            var cacheSuggestion = {};
            // 定义延时变量
            var timer = null;
            // 1.给搜索框绑定键盘弹起事件
            $(".ipt").on("keyup", function () {
                // 获取搜索框的值
                var searchValue = $(".ipt").val().trim();
                // 调用防抖函数
                antiShake(searchValue);
                if (cacheSuggestion[searchValue]) {
                    return renderingSuggestion(cacheSuggestion[searchValue]);
                }
            })
            // 2.封装一个jsonp跨域请求函数
            function getData(kw) {
                $.ajax({
                    url: "https://suggest.taobao.com/sug?q=" + kw,
                    dataType: "jsonp",
                    success: res => {
                        // 调用渲染函数
                        renderingSuggestion(res)
                    }
                })
            }
            // 3.渲染UI结构函数
            function renderingSuggestion(res) {
                // 对是否有联想关键字做判断
                if (res.result.length <= 0) {
                    // 如果没有联想词，就清空建议列表并隐藏边框
                    return $(".hotWordLenovoList").empty().hide();
                }
                var k = $(".ipt").val().trim();
                cacheSuggestion[k] = res;
                // 如果有建议词，就显示边框
                // 调用模板引擎template函数
                var htmlStr = template('templateSuggestion', res);
                $(".hotWordLenovoList").html(htmlStr).show()
            }
            // 4.给表单做防抖操作
            // 表单防抖，减少请求的次数
            function antiShake(searchValue) {
                // 清空定时器，重新计算时间
                clearTimeout(timer);
                timer = setTimeout(function () {
                    // 请求一次数据
                    getData(searchValue)
                }, 500)
            }
        }
    </script>
</body>

</html>